import {
	router,
	RouterMount
} from '@/router'
export default {
	/**
	 * 常规跳转
	 */
	navigateTo: (url, data = {}) => {
		// #ifdef MP-WEIXIN
		const routesItem = router.options.routes.find((item) => {
			return item.aliasPath === url;
		});
		router.push({
			name: routesItem.name
		})
		// #endif
		// #ifndef MP-WEIXIN
		uni.navigateTo({
			url,
			...data
		});
		// #endif
	},
	/**
	 * tab 跳转
	 */
	switchTab: (url) => {
		// #ifdef MP-WEIXIN
		const routesItem = router.options.routes.find((item) => {
			return item.aliasPath === url;
		});
		router.pushTab({
			name: routesItem.name
		})
		// #endif
		// #ifndef MP-WEIXIN
		uni.switchTab({
			url
		});
		// #endif
	},
	/**
	 * 关闭当前页面，跳转到应用内的某个页面。
	 */
	redirectTo: (url) => {
		// #ifdef MP-WEIXIN
		const routesItem = router.options.routes.find((item) => {
			return item.aliasPath === url;
		});
		router.replace({
			name: routesItem.name
		})
		// #endif
		// #ifndef MP-WEIXIN
		uni.redirectTo({
			url
		});
		// #endif
	},
	/**
	 * 关闭所有页面，打开到应用内的某个页面。
	 */
	reLaunch: (url) => {
		// #ifdef MP-WEIXIN
		const routesItem = router.options.routes.find((item) => {
			return item.aliasPath === url;
		});
		router.replaceAll({
			name: routesItem.name
		})
		// #endif
		// #ifndef MP-WEIXIN
		uni.reLaunch({
			url
		});
		// #endif
	},
	/**
	 * 返回上一页
	 */
	navigateBack: (delta = 1, success) => {
		// #ifdef MP-WEIXIN
		router.back(delta, {
			success: (...arg) => {
				success(arg)
			}
		})
		// #endif
		// #ifndef MP-WEIXIN
		uni.navigateBack({
			delta
		});
		// #endif
	},
	/**
	 * 返回上一页 并传值
	 */
	navigateParameterBack: (data, keyName = 'reFresh', delta = 1) => {
		let pages = getCurrentPages(); //页面栈
		let prePage = pages[pages.length - 2]; //上一页
		prePage.$vm[keyName] = data; //触发上一页监听器
		uni.navigateBack({
			delta
		});
	},
	/**
	 * 敬请期待
	 */
	expect: () => {
		uni.showToast({
			title: '敬请期待',
			icon: "error",
			duration: 2000
		});
	},
	/**
	 * 转大写
	 */
	toUpperCase: (str) => {
		return str.toUpperCase()
	},
	/**
	 * 转小写
	 */
	toLowerCase: (str) => {
		return str.toLowerCase()
	},
	/**
	 * 处理url
	 */
	handleUrl: (url, oldStr, newStr) => {
		console.log(url);
		console.log(url.replace(oldStr,
			newStr));
		if (url.indexOf(oldStr) != -1) {
			return url.replace(oldStr,
				newStr)
		} else {
			return url
		}
	},
	/**
	 * 预览图片
	 * @param {Object} urls
	 */
	previewImage(urls) {
		uni.previewImage({
			urls,
			longPressActions: {
				itemList: ['发送给朋友', '保存图片', '收藏'],
				success(data) {
					// console.log('选中了第' + (data.tapIndex + 1) + '个按钮,第' + (data.index + 1) + '张图片');
				},
				fail(err) {
					// console.log(err.errMsg);
				}
			}
		});
	},

	/**
	 * 复制
	 * @param {Object} data
	 */
	setClipboardData(data) {
		uni.setClipboardData({
			data,
			success() {
				// console.log('success');
			}
		});
	},

	/**
	 * loading
	 * @param {Boolean} show 显示/隐藏
	 * @param {Object} title 提示文字
	 * @param {Object} mask 透明蒙层
	 */
	showLoading(show = true, title = 'Loading...', mask = true) {
		if (show) {
			uni.showLoading({
				title,
				mask
			});
		} else {
			uni.hideLoading();
		}
	},
	/**
	 * 显示提示
	 * @param {Object} str
	 * @param {Object} icon success none error loading
	 * @param {Object} duration 延迟时间
	 * @param {Object} mask 透明蒙层
	 */
	showToast(str, icon = 'none', duration = 2000, mask = true) {
		uni.showToast({
			title: str,
			duration,
			icon,
			mask
		});
	},
	/**
	 * 拨打电话
	 * @param {Object} phoneNumber
	 */
	makePhoneCall(phoneNumber) {
		uni.makePhoneCall({
			phoneNumber: '114' //仅为示例
		});
	},
	/**
	 * 隐藏私密字符
	 * @param {*} str 字符
	 * @param {*} hide 隐藏数量 
	 * @param {*} beforeLen 之前的数量 
	 * @param {*} afterLen 之后的数量 
	 */
	hidePrivacy(str, hide, beforeLen = 4, afterLen = 4) {
		const _hide_len = hide ? hide : str.substring(beforeLen, str.length - afterLen).length
		let _hide_str = ""
		for (let i = 0; i < _hide_len; i++) {
			_hide_str += "*"
		}
		return str.substring(0, beforeLen) + _hide_str + str.substring(str.length - afterLen, str.length)
	}
}
